package com.excesys.exsecs.access.service;

import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.excesys.exsecs.access.dto.AccessSubareaDTO;
import com.excesys.exsecs.access.entity.AccessSubarea;
import com.excesys.exsecs.access.vo.AccessSubareaExcelVO;
import com.excesys.exsecs.access.vo.AccessSubareaVO;
import com.excesys.exsecs.common.core.util.R;
import org.springframework.validation.BindingResult;

import java.text.ParseException;
import java.util.List;

public interface AccessSubareaService extends IService<AccessSubarea> {

    /**
     * 构建树
     * @param lazy 是否是懒加载
     * @param parentId 父节点ID
     * @return
     */
    List<Tree<String>> treeMenu(boolean lazy, String parentId);

    /**
     * 权限分区树
     * @param lazy
     * @param parentId
     * @return
     */
    List<Tree<String>> treeMenu2(boolean lazy, String parentId);

    /**
     * 导入楼层管理
     * @param excelVOList 楼层管理列表
     * @param bindingResult 错误信息列表
     * @return ok fail
     */
    R importSubarea(List<AccessSubareaExcelVO> excelVOList, BindingResult bindingResult) throws ParseException;

    R batchImportSubarea(List<AccessSubareaExcelVO> excelVOList, BindingResult bindingResult, String subareadCode)
            throws ParseException;

    /**
     * 查询全部的分区
     * @return list
     */
    List<AccessSubareaExcelVO> listSubarea(AccessSubareaDTO bamSSubarea);

    IPage<AccessSubareaVO> getSubareaVosPage(Page page, AccessSubareaDTO bamSSubareaDTO);

    List<AccessSubareaVO> getSubareaVos(AccessSubareaDTO bamSSubareaDTO);

    void addSubAreaByMapJson(String data, String lc) throws ParseException;

    String GetSubareaCodeBy(String code, int level, String suffix) throws ParseException;

    List<AccessSubareaVO> selectAll();

    AccessSubareaVO selectByPrimaryKey(String id);
}